package part3.c13_active_object;

/**
 * Created by lie on 2018/3/23.
 * 展现多线程效果
 * 实际并不复杂
 *      我们注意到每一个加进engine里的command都会被执行，并且执行完毕以后，才会到下一个
 *      同时，每一个{@link SleepCommand}实例，都维护着它的一个执行"序列"——sleep完以后执行构造里的另一个command
 *
 *  本类并没有成功实现多线程！！
 */
public class MultiDelayCommand implements Command {

    private static ActiveObjectEngine sEngine;//共同维护一个engine
    public static boolean isStop = false;

    private char aChar;

    public MultiDelayCommand(ActiveObjectEngine engine, char character) {
        sEngine = engine;
        this.aChar = character;
    }

    public void execute() throws Exception {
        System.out.print(aChar);
        //这种写法因为即时的加进了engine，所以并不能造出"多线程"的感觉
        if (!isStop) {
            sEngine.addCommand(this);
        }

    }


}
